<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>天气案例-监视属性</title>
  <script src="../js/vue.js"></script>
</head>
<body>
    <div id="root">
        <h3>今天天气真{{info}}</h3>
        <button @click="isHot = ! isHot">切换</button>
    </div>
    <script type='text/javascript'>
        const vm = new Vue({
            el:'#root',
            data:{
               isHot:true
            },
            methods:{
              changeWeather(){
                  //  if(this.isHot){
                  //     this.isHot = false
                  //  }else{
                  //     this.isHot = true
                  //  }

                  //(1)以后以上代码 直接用下面取反用在语句中
                  this.isHot = ! this.isHot
               }
            },
            computed:{
               info(){
                  return this.isHot ? '炎热' : '寒冷'
               }
            },
            watch:{
                // (1)监视对象
                isHot:{
                    // (2)可以让handler初始化时被调用一次
                    immediate:true,
                    // (3)handler参数为被监视对象前后的变化值，在值被调用时就会被调用
                    handler(newValue,oldValue){
                        console.log('数据被修改了',newValue,oldValue);
                    }
                },
                // (4)计算属性也可以监视
                // info:{
                //     // 可以让handler初始化时被调用一次
                //     immediate:true,
                //     // 参数为被监视对象前后的变化值
                //     handler(newValue,oldValue){
                //         console.log('info被修改了',newValue,oldValue);
                //     }
                // }
            }
        })
        // (5) 还可以通过vm实例使用$watch('被监视对象',监视内容)动态监视
        vm.$watch('info',{
             // 可以让handler初始化时被调用一次
             immediate:true,
             // 参数为被监视对象前后的变化值
             handler(newValue,oldValue){
             console.log('info被修改了',newValue,oldValue);
           }
        })
    </script>
</body>
</html>